package com.springdemo.controller;

import com.springdemo.pojo.Book;
import com.springdemo.pojo.Result;
import com.springdemo.pojo.User;
import com.springdemo.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * 用户管理控制器，提供与用户及书籍相关的操作接口。
 */
@RestController
@CrossOrigin // 解决跨域问题
@RequestMapping("/user") // 定义基础请求路径
public class Controller {
    @Autowired
    private UserService userService; // 注入 UserService，处理业务逻辑

    /**
     * 测试接口，返回 "Hello, World!" 字符串。
     * @return 包含响应信息的 Result 对象
     */
    @GetMapping("/hello")
    public Result helloWorld() {
        return Result.success("Hello, World!");
    }

    /**
     * 查询所有用户信息。
     * @return 包含用户列表的 Result 对象
     */
    @GetMapping("/findAll")
    public Result findAll() {
        List<User> users = userService.findAll();
        return Result.success(users);
    }

    /**
     * 根据用户 ID 删除用户。
     * @param id 用户 ID
     * @return 删除操作的结果
     */
    @DeleteMapping("/delete/{id}")
    public Result deleteUser(@PathVariable Integer id) {
        if (userService.deleteUser(id)) return Result.success("已删除一条数据");
        return Result.error("删除失败");
    }

    /**
     * 根据用户名查找用户。
     * @param name 用户名
     * @return 匹配的用户列表
     */
    @PostMapping("/findName")
    public Result findUserByName(@RequestParam String name) {
        List<User> users = userService.findUserByName(name);
        return Result.success(users);
    }

    /**
     * 根据用户手机号查找用户。
     * @param phone 用户手机号
     * @return 匹配的用户列表
     */
    @PostMapping("/findPhone")
    public Result findUserByPhone(@RequestParam String phone) {
        List<User> users = userService.findUserByPhone(phone);
        return Result.success(users);
    }

    /**
     * 根据书名查找用户。
     * @param bookName 书名
     * @return 匹配的用户列表
     */
    @PostMapping("/findBookName")
    public Result findBookName(@RequestParam String bookName) {
        List<User> users = userService.findBookName(bookName);
        return Result.success(users);
    }

    /**
     * 添加新用户。
     * @param user 用户对象
     * @return 添加操作的结果
     */
    @PostMapping("/addUser")
    public Result addUser(@RequestBody User user) {
        if (userService.addUser(user)) return Result.success("添加成功");
        return Result.error("添加失败");
    }

    /**
     * 更新用户信息。
     * @param user 用户对象
     * @return 更新操作的结果
     */
    @PostMapping("/updateUser")
    public Result updateUser(@RequestBody User user) {
        if (userService.updateUser(user)) return Result.success("修改成功");
        return Result.error("修改失败");
    }

    /**
     * 添加新书籍。
     * @param book 书籍对象
     * @return 添加操作的结果
     */
    @PostMapping("/addBook")
    public Result addBook(@RequestBody Book book) {
        if (userService.addBook(book)) return Result.success("添加成功");
        return Result.error("添加失败");
    }

    /**
     * 更新书籍库存信息。
     * @param bookName 书名
     * @return 更新操作的结果
     */
    @GetMapping("/updateBook/{bookName}")
    public Result updateBook(@PathVariable String bookName) {
        if (userService.findBookNumber(bookName) < 1) return Result.error(bookName + " 的数量不足");
        if (userService.updateBook(bookName)) return Result.success("修改成功");
        return Result.error("添加失败");
    }
}
